#ifndef __TOKEN_H__
#define __TOKEN_H__
#include "../log/systemLog/systemLog.h"
#include <stddef.h>

/**
 * @brief 生成 JWT 令牌
 *
 * @param username 用户名
 * @param out_token 输出的 JWT 令牌字符串，调用者负责释放内存
 * @param out_length 输出的 JWT 令牌长度
 * @return system_error_code_t 操作结果
 */
system_error_code_t generate_jwt_token(const char *username, char **out_token, size_t *out_length);

/**
 * @brief 验证 JWT 令牌的有效性
 *
 * @param username 用户名
 * @param token 需要验证的 JWT 令牌字符串
 * @return system_error_code_t 操作结果
 */
system_error_code_t is_valid_jwt_token(const char *username, const char *token);

/**
 * @brief 验证 JWT 令牌并解析出用户名
 *
 * @param token 需要验证的 JWT 令牌字符串
 * @param out_username 输出的用户名，调用者负责释放内存
 * @return system_error_code_t 操作结果
 */
system_error_code_t validate_jwt_and_get_username(const char *token, char **out_username);

#endif // __TOKEN_H__